#!usr/bin/python3   定义解释器
import subprocess
import IPy
import ipaddress

ipadd = input("请输入network,mask：") #输入网段，子网掩码

try:  #异常处理
    ipaddress.ip_network(ipadd,strict=False)
    #判断参数传递类型是否正确
except ValueError  as a: #错误就执行这条语句
    print("参数传递类型不正确,正确的格式如192.168.0.0/24",a)
else: #正确就执行这条语句
    ip = IPy.IP(ipadd)# 将输入的网段里的所有ip地址，存给ip这个变量
    fp = open("ip.txt","w+")#打开ip.txt,文件，没有就新建，覆盖写入

for i in  ip:
    result = subprocess.run(f"ping{i} -c 1 -w 1", shell=True)
    #因为是在Linux里面运行所有要用到subprocess.run这个模块
    #ping{i}是ping这个ip地址通不通，通就被使用了，反之奕然
    # -c 1 是发送一个包  -w 1 是ping的时间是一秒钟
    #shell=True
    if result.returncode == 0:
        # 这里是如果其返回值为0 则代表执行成功
        fp.write(f"该{i}地址已经被使用\n")
    else:   #返回非0 及代表执行失败
        fp.write(f"该{i}地址没有被使用\n")

